package com.lube.codec;

/**
 * 消息指令类型定义
 * 
 * @author caizhiping
 * @date 2016年12月21日 上午10:13:00
 */
public enum CommandType {

	/**
	 * 客户端向服务端发起连接请求
	 */
	CONNECT(1),

	/**
	 * 服务端返回连接请求回应信息
	 */
	CONNECTACK(2),

	/**
	 * 心跳请求
	 */
	PING(3),

	/**
	 * 心跳回应
	 */
	PINGACK(4),

	/**
	 * 发送消息
	 */
	PUBLISH(5),

	/**
	 * 消息接收回应
	 */
	PUBACK(6),

	/**
	 * 客户端断开连接
	 */
	DISCONNECT(7);

	private final int value;

	CommandType(int value) {
		this.value = value;
	}
	
	public int getValue(){
		return value;
	}

	public static CommandType valueOf(int type) {
		for (CommandType t : values()) {
			if (t.value == type) {
				return t;
			}
		}

		throw new IllegalArgumentException("unknown message type: " + type);
	}
}
